{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 基于K线形态锤子线的趋势跟踪策略及各类改进（TBD）\n",
    "\n",
    "---"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 1.基本定义\n",
    "\n",
    "1.1 K线部位定义：  \n",
    "    实体：某一根K线开盘价和收盘价之间部分;  \n",
    "    上影线：某一根K线最高价到实体上端的部分;  \n",
    "    下影线：某一根K线最低价到实体下端的部分;"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "1.2 锤子线定义  \n",
    "   实体处于整个价格区间上端，实体颜色本身不影响;  \n",
    "   下影线长度至少达到实体高度的2倍;  \n",
    "   上影线很短;"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "1.3 形态要点：    \n",
    "在出现锤头线（锤子线）之前，股价需经过一段时间的下跌后，处于下跌趋势中，此时出现此形态才具有参考意义；  \n",
    "锤头实体越小，下影线越长，止跌作用就越明显，参考价值越大；"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2.策略核心思想"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "2.1 策略原理  \n",
    "在下跌过程中，当某一日出现锤子线，意味着当天行情先继续下跌后出现大幅反弹，行情可能由此反转; \n",
    "\n",
    "由此以观察期均线识别趋势下跌，以下跌趋势中出现锤子线作为开仓信号; \n",
    "\n",
    "采用移动止损方式进行止损构建此策略;"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "2.2 止损条件  \n",
    "当天最低价 < max(均价-观察期内一定倍数的标准差，开仓价-开仓时标准差）;"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 3.策略实现"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 3.1 收集并计算所需数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import tushare as ts\n",
    "\n",
    "import matplotlib as mpl\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline\n",
    "\n",
    "# 确保‘-’号显示正常\n",
    "mpl.rcParams['axes.unicode_minus']=False\n",
    "# 确保中文显示正常\n",
    "mpl.rcParams['font.sans-serif'] = ['SimHei']  \n",
    "\n",
    "import warnings; warnings.simplefilter('ignore')       #忽略警告信息；"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "code = '000069'         # 华侨城\n",
    "body_size = 0.03        # 表示锤子实体大小上限，基准为当日开盘价，实体不能太大，波动范围限制在3%；\n",
    "head_size = 0.5         # 表示锤子上影线长度上限，基准为下影线长度，上影线要短一点，不能超过下影线的的一半；\n",
    "tail_size = 2           # 表示下影线与实体大小比值，下影线要大于实体两倍；\n",
    "length = 10             # 表示观察期时间长短；\n",
    "stoplose_trigger = 1.5    # 表示当价格偏离均线满足几倍标准差时止损"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "本接口即将停止更新，请尽快使用Pro版接口：https://tushare.pro/document/2\n"
     ]
    }
   ],
   "source": [
    "data = ts.get_k_data(code, '2015-08-17', '2020-08-17')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "data.sort_index(ascending=True, inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>date</th>\n",
       "      <th>open</th>\n",
       "      <th>close</th>\n",
       "      <th>high</th>\n",
       "      <th>low</th>\n",
       "      <th>volume</th>\n",
       "      <th>code</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>108</td>\n",
       "      <td>2015-08-17</td>\n",
       "      <td>9.695</td>\n",
       "      <td>10.209</td>\n",
       "      <td>10.368</td>\n",
       "      <td>9.592</td>\n",
       "      <td>1646471.0</td>\n",
       "      <td>000069</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>109</td>\n",
       "      <td>2015-08-18</td>\n",
       "      <td>10.209</td>\n",
       "      <td>9.190</td>\n",
       "      <td>10.209</td>\n",
       "      <td>9.190</td>\n",
       "      <td>1406226.0</td>\n",
       "      <td>000069</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>110</td>\n",
       "      <td>2015-08-19</td>\n",
       "      <td>8.881</td>\n",
       "      <td>9.302</td>\n",
       "      <td>9.433</td>\n",
       "      <td>8.414</td>\n",
       "      <td>1177271.0</td>\n",
       "      <td>000069</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>111</td>\n",
       "      <td>2015-08-20</td>\n",
       "      <td>9.003</td>\n",
       "      <td>8.732</td>\n",
       "      <td>9.096</td>\n",
       "      <td>8.638</td>\n",
       "      <td>733191.0</td>\n",
       "      <td>000069</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>112</td>\n",
       "      <td>2015-08-21</td>\n",
       "      <td>8.648</td>\n",
       "      <td>8.227</td>\n",
       "      <td>8.732</td>\n",
       "      <td>8.208</td>\n",
       "      <td>807939.0</td>\n",
       "      <td>000069</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           date    open   close    high    low     volume    code\n",
       "108  2015-08-17   9.695  10.209  10.368  9.592  1646471.0  000069\n",
       "109  2015-08-18  10.209   9.190  10.209  9.190  1406226.0  000069\n",
       "110  2015-08-19   8.881   9.302   9.433  8.414  1177271.0  000069\n",
       "111  2015-08-20   9.003   8.732   9.096  8.638   733191.0  000069\n",
       "112  2015-08-21   8.648   8.227   8.732  8.208   807939.0  000069"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "data.reset_index(inplace=True)        #把索引设置成为默认；为了后面交易策略逻辑循环更方便一些；"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>index</th>\n",
       "      <th>date</th>\n",
       "      <th>open</th>\n",
       "      <th>close</th>\n",
       "      <th>high</th>\n",
       "      <th>low</th>\n",
       "      <th>volume</th>\n",
       "      <th>code</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>108</td>\n",
       "      <td>2015-08-17</td>\n",
       "      <td>9.695</td>\n",
       "      <td>10.209</td>\n",
       "      <td>10.368</td>\n",
       "      <td>9.592</td>\n",
       "      <td>1646471.0</td>\n",
       "      <td>000069</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>109</td>\n",
       "      <td>2015-08-18</td>\n",
       "      <td>10.209</td>\n",
       "      <td>9.190</td>\n",
       "      <td>10.209</td>\n",
       "      <td>9.190</td>\n",
       "      <td>1406226.0</td>\n",
       "      <td>000069</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>110</td>\n",
       "      <td>2015-08-19</td>\n",
       "      <td>8.881</td>\n",
       "      <td>9.302</td>\n",
       "      <td>9.433</td>\n",
       "      <td>8.414</td>\n",
       "      <td>1177271.0</td>\n",
       "      <td>000069</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>111</td>\n",
       "      <td>2015-08-20</td>\n",
       "      <td>9.003</td>\n",
       "      <td>8.732</td>\n",
       "      <td>9.096</td>\n",
       "      <td>8.638</td>\n",
       "      <td>733191.0</td>\n",
       "      <td>000069</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>112</td>\n",
       "      <td>2015-08-21</td>\n",
       "      <td>8.648</td>\n",
       "      <td>8.227</td>\n",
       "      <td>8.732</td>\n",
       "      <td>8.208</td>\n",
       "      <td>807939.0</td>\n",
       "      <td>000069</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   index        date    open   close    high    low     volume    code\n",
       "0    108  2015-08-17   9.695  10.209  10.368  9.592  1646471.0  000069\n",
       "1    109  2015-08-18  10.209   9.190  10.209  9.190  1406226.0  000069\n",
       "2    110  2015-08-19   8.881   9.302   9.433  8.414  1177271.0  000069\n",
       "3    111  2015-08-20   9.003   8.732   9.096  8.638   733191.0  000069\n",
       "4    112  2015-08-21   8.648   8.227   8.732  8.208   807939.0  000069"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "data['pct_change'] = data['close'].pct_change()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "data['ma'] = data['close'].rolling(length).mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "data['std'] = data['close'].rolling(length).std()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>index</th>\n",
       "      <th>date</th>\n",
       "      <th>open</th>\n",
       "      <th>close</th>\n",
       "      <th>high</th>\n",
       "      <th>low</th>\n",
       "      <th>volume</th>\n",
       "      <th>code</th>\n",
       "      <th>pct_change</th>\n",
       "      <th>ma</th>\n",
       "      <th>std</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>1212</td>\n",
       "      <td>1320</td>\n",
       "      <td>2020-08-10</td>\n",
       "      <td>7.29</td>\n",
       "      <td>7.41</td>\n",
       "      <td>7.49</td>\n",
       "      <td>7.23</td>\n",
       "      <td>609633.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>0.013680</td>\n",
       "      <td>7.317</td>\n",
       "      <td>0.171921</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1213</td>\n",
       "      <td>1321</td>\n",
       "      <td>2020-08-11</td>\n",
       "      <td>7.43</td>\n",
       "      <td>7.30</td>\n",
       "      <td>7.57</td>\n",
       "      <td>7.28</td>\n",
       "      <td>587427.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>-0.014845</td>\n",
       "      <td>7.342</td>\n",
       "      <td>0.144822</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1214</td>\n",
       "      <td>1322</td>\n",
       "      <td>2020-08-12</td>\n",
       "      <td>7.30</td>\n",
       "      <td>7.30</td>\n",
       "      <td>7.39</td>\n",
       "      <td>7.16</td>\n",
       "      <td>658822.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>7.349</td>\n",
       "      <td>0.140432</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1215</td>\n",
       "      <td>1323</td>\n",
       "      <td>2020-08-13</td>\n",
       "      <td>7.31</td>\n",
       "      <td>7.31</td>\n",
       "      <td>7.38</td>\n",
       "      <td>7.26</td>\n",
       "      <td>370999.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>0.001370</td>\n",
       "      <td>7.363</td>\n",
       "      <td>0.126934</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1216</td>\n",
       "      <td>1324</td>\n",
       "      <td>2020-08-14</td>\n",
       "      <td>7.31</td>\n",
       "      <td>7.42</td>\n",
       "      <td>7.43</td>\n",
       "      <td>7.26</td>\n",
       "      <td>393725.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>0.015048</td>\n",
       "      <td>7.388</td>\n",
       "      <td>0.107889</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      index        date  open  close  high   low    volume    code  \\\n",
       "1212   1320  2020-08-10  7.29   7.41  7.49  7.23  609633.0  000069   \n",
       "1213   1321  2020-08-11  7.43   7.30  7.57  7.28  587427.0  000069   \n",
       "1214   1322  2020-08-12  7.30   7.30  7.39  7.16  658822.0  000069   \n",
       "1215   1323  2020-08-13  7.31   7.31  7.38  7.26  370999.0  000069   \n",
       "1216   1324  2020-08-14  7.31   7.42  7.43  7.26  393725.0  000069   \n",
       "\n",
       "      pct_change     ma       std  \n",
       "1212    0.013680  7.317  0.171921  \n",
       "1213   -0.014845  7.342  0.144822  \n",
       "1214    0.000000  7.349  0.140432  \n",
       "1215    0.001370  7.363  0.126934  \n",
       "1216    0.015048  7.388  0.107889  "
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.tail()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "由于实盘中当天的日线级别参考指标未实现，因此使用昨日参考指标指导当日交易,避免未来函数；"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "data['yes_ma'] = data['ma'].shift(1)          #昨天的mean和昨天的std；"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "data['yes_std'] = data['std'].shift(1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 3.2 识别锤子形态"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "计算实体，上影线，下影线"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "data['body'] = abs(data['open'] - data['close'])                   #计算K线实体；"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "data['head'] = data['high'] - data[['open', 'close']].max(axis = 1 )       #计算上影线，按行计算"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "data['tail'] = data[['open', 'close']].min(axis=1) - data['low']        #计算下影线"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>index</th>\n",
       "      <th>date</th>\n",
       "      <th>open</th>\n",
       "      <th>close</th>\n",
       "      <th>high</th>\n",
       "      <th>low</th>\n",
       "      <th>volume</th>\n",
       "      <th>code</th>\n",
       "      <th>pct_change</th>\n",
       "      <th>ma</th>\n",
       "      <th>std</th>\n",
       "      <th>yes_ma</th>\n",
       "      <th>yes_std</th>\n",
       "      <th>body</th>\n",
       "      <th>head</th>\n",
       "      <th>tail</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>108</td>\n",
       "      <td>2015-08-17</td>\n",
       "      <td>9.695</td>\n",
       "      <td>10.209</td>\n",
       "      <td>10.368</td>\n",
       "      <td>9.592</td>\n",
       "      <td>1646471.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.514</td>\n",
       "      <td>0.159</td>\n",
       "      <td>0.103</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>109</td>\n",
       "      <td>2015-08-18</td>\n",
       "      <td>10.209</td>\n",
       "      <td>9.190</td>\n",
       "      <td>10.209</td>\n",
       "      <td>9.190</td>\n",
       "      <td>1406226.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>-0.099814</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.019</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>110</td>\n",
       "      <td>2015-08-19</td>\n",
       "      <td>8.881</td>\n",
       "      <td>9.302</td>\n",
       "      <td>9.433</td>\n",
       "      <td>8.414</td>\n",
       "      <td>1177271.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>0.012187</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.421</td>\n",
       "      <td>0.131</td>\n",
       "      <td>0.467</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>111</td>\n",
       "      <td>2015-08-20</td>\n",
       "      <td>9.003</td>\n",
       "      <td>8.732</td>\n",
       "      <td>9.096</td>\n",
       "      <td>8.638</td>\n",
       "      <td>733191.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>-0.061277</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.271</td>\n",
       "      <td>0.093</td>\n",
       "      <td>0.094</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>112</td>\n",
       "      <td>2015-08-21</td>\n",
       "      <td>8.648</td>\n",
       "      <td>8.227</td>\n",
       "      <td>8.732</td>\n",
       "      <td>8.208</td>\n",
       "      <td>807939.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>-0.057833</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.421</td>\n",
       "      <td>0.084</td>\n",
       "      <td>0.019</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   index        date    open   close    high    low     volume    code  \\\n",
       "0    108  2015-08-17   9.695  10.209  10.368  9.592  1646471.0  000069   \n",
       "1    109  2015-08-18  10.209   9.190  10.209  9.190  1406226.0  000069   \n",
       "2    110  2015-08-19   8.881   9.302   9.433  8.414  1177271.0  000069   \n",
       "3    111  2015-08-20   9.003   8.732   9.096  8.638   733191.0  000069   \n",
       "4    112  2015-08-21   8.648   8.227   8.732  8.208   807939.0  000069   \n",
       "\n",
       "   pct_change  ma  std  yes_ma  yes_std   body   head   tail  \n",
       "0         NaN NaN  NaN     NaN      NaN  0.514  0.159  0.103  \n",
       "1   -0.099814 NaN  NaN     NaN      NaN  1.019  0.000  0.000  \n",
       "2    0.012187 NaN  NaN     NaN      NaN  0.421  0.131  0.467  \n",
       "3   -0.061277 NaN  NaN     NaN      NaN  0.271  0.093  0.094  \n",
       "4   -0.057833 NaN  NaN     NaN      NaN  0.421  0.084  0.019  "
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "判断K线各部分是否符合锤子线要求"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "data['body_cond'] = np.where(data['body']/data['open'] < body_size, 1, 0)     #实体的大小比开盘价要小于3%，K线实体不能太大；"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "data['head_cond'] = np.where(data['tail']==0, False, data['head'] / data['tail'] < head_size)   #上影线不能比下影线的一半长；\n",
    "# 当尾部长度为0，为防止判断除法报错，两步判断；\n",
    "# data['head_cond'] = np.where(data['head']/data['tail'] < head_size, 1, 0)   有可能tail = 0 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "data['tail_cond'] = np.where(data['body']==0, True, data['tail']/data['body'] > tail_size)    #下影线要比实体的两倍更长才满足条件；"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>index</th>\n",
       "      <th>date</th>\n",
       "      <th>open</th>\n",
       "      <th>close</th>\n",
       "      <th>high</th>\n",
       "      <th>low</th>\n",
       "      <th>volume</th>\n",
       "      <th>code</th>\n",
       "      <th>pct_change</th>\n",
       "      <th>ma</th>\n",
       "      <th>std</th>\n",
       "      <th>yes_ma</th>\n",
       "      <th>yes_std</th>\n",
       "      <th>body</th>\n",
       "      <th>head</th>\n",
       "      <th>tail</th>\n",
       "      <th>body_cond</th>\n",
       "      <th>head_cond</th>\n",
       "      <th>tail_cond</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>108</td>\n",
       "      <td>2015-08-17</td>\n",
       "      <td>9.695</td>\n",
       "      <td>10.209</td>\n",
       "      <td>10.368</td>\n",
       "      <td>9.592</td>\n",
       "      <td>1646471.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.514</td>\n",
       "      <td>0.159</td>\n",
       "      <td>0.103</td>\n",
       "      <td>0</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>109</td>\n",
       "      <td>2015-08-18</td>\n",
       "      <td>10.209</td>\n",
       "      <td>9.190</td>\n",
       "      <td>10.209</td>\n",
       "      <td>9.190</td>\n",
       "      <td>1406226.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>-0.099814</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.019</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>110</td>\n",
       "      <td>2015-08-19</td>\n",
       "      <td>8.881</td>\n",
       "      <td>9.302</td>\n",
       "      <td>9.433</td>\n",
       "      <td>8.414</td>\n",
       "      <td>1177271.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>0.012187</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.421</td>\n",
       "      <td>0.131</td>\n",
       "      <td>0.467</td>\n",
       "      <td>0</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>111</td>\n",
       "      <td>2015-08-20</td>\n",
       "      <td>9.003</td>\n",
       "      <td>8.732</td>\n",
       "      <td>9.096</td>\n",
       "      <td>8.638</td>\n",
       "      <td>733191.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>-0.061277</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.271</td>\n",
       "      <td>0.093</td>\n",
       "      <td>0.094</td>\n",
       "      <td>0</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>112</td>\n",
       "      <td>2015-08-21</td>\n",
       "      <td>8.648</td>\n",
       "      <td>8.227</td>\n",
       "      <td>8.732</td>\n",
       "      <td>8.208</td>\n",
       "      <td>807939.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>-0.057833</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.421</td>\n",
       "      <td>0.084</td>\n",
       "      <td>0.019</td>\n",
       "      <td>0</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   index        date    open   close    high    low     volume    code  \\\n",
       "0    108  2015-08-17   9.695  10.209  10.368  9.592  1646471.0  000069   \n",
       "1    109  2015-08-18  10.209   9.190  10.209  9.190  1406226.0  000069   \n",
       "2    110  2015-08-19   8.881   9.302   9.433  8.414  1177271.0  000069   \n",
       "3    111  2015-08-20   9.003   8.732   9.096  8.638   733191.0  000069   \n",
       "4    112  2015-08-21   8.648   8.227   8.732  8.208   807939.0  000069   \n",
       "\n",
       "   pct_change  ma  std  yes_ma  yes_std   body   head   tail  body_cond  \\\n",
       "0         NaN NaN  NaN     NaN      NaN  0.514  0.159  0.103          0   \n",
       "1   -0.099814 NaN  NaN     NaN      NaN  1.019  0.000  0.000          0   \n",
       "2    0.012187 NaN  NaN     NaN      NaN  0.421  0.131  0.467          0   \n",
       "3   -0.061277 NaN  NaN     NaN      NaN  0.271  0.093  0.094          0   \n",
       "4   -0.057833 NaN  NaN     NaN      NaN  0.421  0.084  0.019          0   \n",
       "\n",
       "   head_cond  tail_cond  \n",
       "0      False      False  \n",
       "1      False      False  \n",
       "2       True      False  \n",
       "3      False      False  \n",
       "4      False      False  "
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "判断K线形态是否符合锤子线"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [],
   "source": [
    "data['hammer'] = data[['head_cond', 'body_cond', 'tail_cond']].all(axis=1)      #同时满足以上三个条件才是锤子K线；"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1212    False\n",
       "1213    False\n",
       "1214    False\n",
       "1215    False\n",
       "1216    False\n",
       "Name: hammer, dtype: bool"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data['hammer'].tail()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>index</th>\n",
       "      <th>date</th>\n",
       "      <th>open</th>\n",
       "      <th>close</th>\n",
       "      <th>high</th>\n",
       "      <th>low</th>\n",
       "      <th>volume</th>\n",
       "      <th>code</th>\n",
       "      <th>pct_change</th>\n",
       "      <th>ma</th>\n",
       "      <th>std</th>\n",
       "      <th>yes_ma</th>\n",
       "      <th>yes_std</th>\n",
       "      <th>body</th>\n",
       "      <th>head</th>\n",
       "      <th>tail</th>\n",
       "      <th>body_cond</th>\n",
       "      <th>head_cond</th>\n",
       "      <th>tail_cond</th>\n",
       "      <th>hammer</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>1084</td>\n",
       "      <td>1192</td>\n",
       "      <td>2020-02-04</td>\n",
       "      <td>6.35</td>\n",
       "      <td>6.39</td>\n",
       "      <td>6.44</td>\n",
       "      <td>6.24</td>\n",
       "      <td>750312.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>0.003140</td>\n",
       "      <td>7.280</td>\n",
       "      <td>0.519829</td>\n",
       "      <td>7.416</td>\n",
       "      <td>0.431514</td>\n",
       "      <td>0.04</td>\n",
       "      <td>0.05</td>\n",
       "      <td>0.11</td>\n",
       "      <td>1</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1087</td>\n",
       "      <td>1195</td>\n",
       "      <td>2020-02-07</td>\n",
       "      <td>6.50</td>\n",
       "      <td>6.50</td>\n",
       "      <td>6.51</td>\n",
       "      <td>6.40</td>\n",
       "      <td>443660.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>-0.010654</td>\n",
       "      <td>6.918</td>\n",
       "      <td>0.517167</td>\n",
       "      <td>7.026</td>\n",
       "      <td>0.532712</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.01</td>\n",
       "      <td>0.10</td>\n",
       "      <td>1</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1137</td>\n",
       "      <td>1245</td>\n",
       "      <td>2020-04-20</td>\n",
       "      <td>6.37</td>\n",
       "      <td>6.38</td>\n",
       "      <td>6.39</td>\n",
       "      <td>6.28</td>\n",
       "      <td>213006.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>0.004724</td>\n",
       "      <td>6.374</td>\n",
       "      <td>0.039215</td>\n",
       "      <td>6.376</td>\n",
       "      <td>0.040056</td>\n",
       "      <td>0.01</td>\n",
       "      <td>0.01</td>\n",
       "      <td>0.09</td>\n",
       "      <td>1</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1156</td>\n",
       "      <td>1264</td>\n",
       "      <td>2020-05-20</td>\n",
       "      <td>6.08</td>\n",
       "      <td>6.07</td>\n",
       "      <td>6.11</td>\n",
       "      <td>6.00</td>\n",
       "      <td>375881.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.217</td>\n",
       "      <td>0.150927</td>\n",
       "      <td>6.245</td>\n",
       "      <td>0.146534</td>\n",
       "      <td>0.01</td>\n",
       "      <td>0.03</td>\n",
       "      <td>0.07</td>\n",
       "      <td>1</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1160</td>\n",
       "      <td>1268</td>\n",
       "      <td>2020-05-26</td>\n",
       "      <td>5.89</td>\n",
       "      <td>5.90</td>\n",
       "      <td>5.91</td>\n",
       "      <td>5.85</td>\n",
       "      <td>354398.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>0.003401</td>\n",
       "      <td>6.019</td>\n",
       "      <td>0.126179</td>\n",
       "      <td>6.056</td>\n",
       "      <td>0.140807</td>\n",
       "      <td>0.01</td>\n",
       "      <td>0.01</td>\n",
       "      <td>0.04</td>\n",
       "      <td>1</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1169</td>\n",
       "      <td>1277</td>\n",
       "      <td>2020-06-08</td>\n",
       "      <td>6.06</td>\n",
       "      <td>6.04</td>\n",
       "      <td>6.07</td>\n",
       "      <td>5.98</td>\n",
       "      <td>368699.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>0.003322</td>\n",
       "      <td>5.972</td>\n",
       "      <td>0.091506</td>\n",
       "      <td>5.956</td>\n",
       "      <td>0.092280</td>\n",
       "      <td>0.02</td>\n",
       "      <td>0.01</td>\n",
       "      <td>0.06</td>\n",
       "      <td>1</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1171</td>\n",
       "      <td>1279</td>\n",
       "      <td>2020-06-10</td>\n",
       "      <td>6.08</td>\n",
       "      <td>6.07</td>\n",
       "      <td>6.09</td>\n",
       "      <td>6.02</td>\n",
       "      <td>272229.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>-0.001645</td>\n",
       "      <td>6.009</td>\n",
       "      <td>0.087743</td>\n",
       "      <td>5.990</td>\n",
       "      <td>0.093452</td>\n",
       "      <td>0.01</td>\n",
       "      <td>0.01</td>\n",
       "      <td>0.05</td>\n",
       "      <td>1</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1183</td>\n",
       "      <td>1291</td>\n",
       "      <td>2020-06-30</td>\n",
       "      <td>6.08</td>\n",
       "      <td>6.06</td>\n",
       "      <td>6.08</td>\n",
       "      <td>6.01</td>\n",
       "      <td>359353.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>0.003311</td>\n",
       "      <td>6.110</td>\n",
       "      <td>0.089194</td>\n",
       "      <td>6.114</td>\n",
       "      <td>0.087585</td>\n",
       "      <td>0.02</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.05</td>\n",
       "      <td>1</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1188</td>\n",
       "      <td>1296</td>\n",
       "      <td>2020-07-07</td>\n",
       "      <td>8.54</td>\n",
       "      <td>8.54</td>\n",
       "      <td>8.54</td>\n",
       "      <td>8.45</td>\n",
       "      <td>931720.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>0.100515</td>\n",
       "      <td>6.690</td>\n",
       "      <td>0.864600</td>\n",
       "      <td>6.447</td>\n",
       "      <td>0.582257</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.09</td>\n",
       "      <td>1</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1210</td>\n",
       "      <td>1318</td>\n",
       "      <td>2020-08-06</td>\n",
       "      <td>7.41</td>\n",
       "      <td>7.37</td>\n",
       "      <td>7.42</td>\n",
       "      <td>7.21</td>\n",
       "      <td>525103.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>0.002721</td>\n",
       "      <td>7.267</td>\n",
       "      <td>0.190091</td>\n",
       "      <td>7.272</td>\n",
       "      <td>0.193724</td>\n",
       "      <td>0.04</td>\n",
       "      <td>0.01</td>\n",
       "      <td>0.16</td>\n",
       "      <td>1</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      index        date  open  close  high   low    volume    code  \\\n",
       "1084   1192  2020-02-04  6.35   6.39  6.44  6.24  750312.0  000069   \n",
       "1087   1195  2020-02-07  6.50   6.50  6.51  6.40  443660.0  000069   \n",
       "1137   1245  2020-04-20  6.37   6.38  6.39  6.28  213006.0  000069   \n",
       "1156   1264  2020-05-20  6.08   6.07  6.11  6.00  375881.0  000069   \n",
       "1160   1268  2020-05-26  5.89   5.90  5.91  5.85  354398.0  000069   \n",
       "1169   1277  2020-06-08  6.06   6.04  6.07  5.98  368699.0  000069   \n",
       "1171   1279  2020-06-10  6.08   6.07  6.09  6.02  272229.0  000069   \n",
       "1183   1291  2020-06-30  6.08   6.06  6.08  6.01  359353.0  000069   \n",
       "1188   1296  2020-07-07  8.54   8.54  8.54  8.45  931720.0  000069   \n",
       "1210   1318  2020-08-06  7.41   7.37  7.42  7.21  525103.0  000069   \n",
       "\n",
       "      pct_change     ma       std  yes_ma   yes_std  body  head  tail  \\\n",
       "1084    0.003140  7.280  0.519829   7.416  0.431514  0.04  0.05  0.11   \n",
       "1087   -0.010654  6.918  0.517167   7.026  0.532712  0.00  0.01  0.10   \n",
       "1137    0.004724  6.374  0.039215   6.376  0.040056  0.01  0.01  0.09   \n",
       "1156    0.000000  6.217  0.150927   6.245  0.146534  0.01  0.03  0.07   \n",
       "1160    0.003401  6.019  0.126179   6.056  0.140807  0.01  0.01  0.04   \n",
       "1169    0.003322  5.972  0.091506   5.956  0.092280  0.02  0.01  0.06   \n",
       "1171   -0.001645  6.009  0.087743   5.990  0.093452  0.01  0.01  0.05   \n",
       "1183    0.003311  6.110  0.089194   6.114  0.087585  0.02  0.00  0.05   \n",
       "1188    0.100515  6.690  0.864600   6.447  0.582257  0.00  0.00  0.09   \n",
       "1210    0.002721  7.267  0.190091   7.272  0.193724  0.04  0.01  0.16   \n",
       "\n",
       "      body_cond  head_cond  tail_cond  hammer  \n",
       "1084          1       True       True    True  \n",
       "1087          1       True       True    True  \n",
       "1137          1       True       True    True  \n",
       "1156          1       True       True    True  \n",
       "1160          1       True       True    True  \n",
       "1169          1       True       True    True  \n",
       "1171          1       True       True    True  \n",
       "1183          1       True       True    True  \n",
       "1188          1       True       True    True  \n",
       "1210          1       True       True    True  "
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data[data['hammer']].tail(10) # 检查是否满足hammer条件"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "由于实盘中当天的日线级别参考指标未实现，因此应根据昨日是否满足锤子形态要求作为开仓信号"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [],
   "source": [
    "data['yes_hammer'] = data['hammer'].shift(1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 3.3 编写交易逻辑——循环法"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [],
   "source": [
    "flag = 0    # 持仓记录，1代码有仓位，0代表空仓；\n",
    "for i in range(2*length, len(data)):     #从20天开始计算，因为前期数据无效；\n",
    "    # 如果已持仓，判断是否止损\n",
    "    if flag == 1:\n",
    "        stoplose_price = max(data.loc[i, 'yes_ma'] - stoplose_trigger*data.loc[i, 'yes_std'],\n",
    "                             long_open_price-long_open_delta) \n",
    "        # 当天价格低于止损价，则进行止损，一个是移动止损，一个是开仓时候的开仓和开仓价-1倍标准差；\n",
    "        if data.loc[i, 'low'] < stoplose_price:  #接下来要做的都是止损的操作；\n",
    "            flag = 0\n",
    "#             data.loc[i, 'return'] = min(data.loc[i, 'open'], stoplose_price)/data.loc[i-1, 'close'] - 1 \n",
    "            #计算清盘当天的收益；取min是因为，如果当天开盘价就小于了止损价，那么我们就要以开盘价就止损；\n",
    "            #不然会导致策略收益高估；\n",
    "            #收益计算时要除以前一天的收盘价；\n",
    "            data.loc[i, 'return'] = stoplose_price/data.loc[i-1, 'close'] - 1 \n",
    "            \n",
    "            data.loc[i, 'trade_mark'] = -10    # 表示当天持仓并进行平仓，记录自己当天交易操作，平仓：-10；\n",
    "            #开仓是10；持仓为1，方便查阅；\n",
    "        \n",
    "        # 如果不满足止损条件，则继续持仓\n",
    "        else:\n",
    "            data.loc[i, 'return'] = data.loc[i, 'close']/data.loc[i-1, 'close'] - 1\n",
    "            data.loc[i, 'trade_mark'] = 1    # 表示当天持仓\n",
    "\n",
    "\n",
    "\n",
    "    # 如果未持仓，判断是否进行开仓\n",
    "    else:\n",
    "        # 判断是否为下降趋势，平均重心是下降的；锤子线开仓要满足形态和下降趋势；\n",
    "        if data.loc[i-length, 'yes_ma'] > data.loc[i, 'yes_ma']:\n",
    "            # 判断是否符合锤子形态\n",
    "            if data.loc[i, 'yes_hammer']:\n",
    "                # 更改持仓标记\n",
    "                flag = 1\n",
    "                # 记录开仓时开仓价格及标准差:是为了做固定止损；\n",
    "                long_open_price = data.loc[i, 'open']\n",
    "                long_open_delta = data.loc[i, 'yes_std']\n",
    "                # 计算当天收益率\n",
    "                data.loc[i, 'return'] = data.loc[i, 'close']/data.loc[i, 'open'] - 1  #以产生信号之后的第二天开盘价开仓；\n",
    "                data.loc[i, 'trade_mark'] = 10    # 表示当天开仓\n",
    "                # 当天开仓之后不进行平仓判断"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>index</th>\n",
       "      <th>date</th>\n",
       "      <th>open</th>\n",
       "      <th>close</th>\n",
       "      <th>high</th>\n",
       "      <th>low</th>\n",
       "      <th>volume</th>\n",
       "      <th>code</th>\n",
       "      <th>pct_change</th>\n",
       "      <th>ma</th>\n",
       "      <th>...</th>\n",
       "      <th>body</th>\n",
       "      <th>head</th>\n",
       "      <th>tail</th>\n",
       "      <th>body_cond</th>\n",
       "      <th>head_cond</th>\n",
       "      <th>tail_cond</th>\n",
       "      <th>hammer</th>\n",
       "      <th>yes_hammer</th>\n",
       "      <th>return</th>\n",
       "      <th>trade_mark</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>1167</td>\n",
       "      <td>1275</td>\n",
       "      <td>2020-06-04</td>\n",
       "      <td>6.08</td>\n",
       "      <td>6.05</td>\n",
       "      <td>6.09</td>\n",
       "      <td>6.02</td>\n",
       "      <td>359589.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>0.003317</td>\n",
       "      <td>5.936</td>\n",
       "      <td>...</td>\n",
       "      <td>0.03</td>\n",
       "      <td>0.01</td>\n",
       "      <td>0.03</td>\n",
       "      <td>1</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>0.003317</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1168</td>\n",
       "      <td>1276</td>\n",
       "      <td>2020-06-05</td>\n",
       "      <td>6.04</td>\n",
       "      <td>6.02</td>\n",
       "      <td>6.07</td>\n",
       "      <td>5.98</td>\n",
       "      <td>236584.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>-0.004959</td>\n",
       "      <td>5.956</td>\n",
       "      <td>...</td>\n",
       "      <td>0.02</td>\n",
       "      <td>0.03</td>\n",
       "      <td>0.04</td>\n",
       "      <td>1</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>-0.004959</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1169</td>\n",
       "      <td>1277</td>\n",
       "      <td>2020-06-08</td>\n",
       "      <td>6.06</td>\n",
       "      <td>6.04</td>\n",
       "      <td>6.07</td>\n",
       "      <td>5.98</td>\n",
       "      <td>368699.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>0.003322</td>\n",
       "      <td>5.972</td>\n",
       "      <td>...</td>\n",
       "      <td>0.02</td>\n",
       "      <td>0.01</td>\n",
       "      <td>0.06</td>\n",
       "      <td>1</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>0.003322</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1170</td>\n",
       "      <td>1278</td>\n",
       "      <td>2020-06-09</td>\n",
       "      <td>6.04</td>\n",
       "      <td>6.08</td>\n",
       "      <td>6.12</td>\n",
       "      <td>6.03</td>\n",
       "      <td>367269.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>0.006623</td>\n",
       "      <td>5.990</td>\n",
       "      <td>...</td>\n",
       "      <td>0.04</td>\n",
       "      <td>0.04</td>\n",
       "      <td>0.01</td>\n",
       "      <td>1</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>0.006623</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1171</td>\n",
       "      <td>1279</td>\n",
       "      <td>2020-06-10</td>\n",
       "      <td>6.08</td>\n",
       "      <td>6.07</td>\n",
       "      <td>6.09</td>\n",
       "      <td>6.02</td>\n",
       "      <td>272229.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>-0.001645</td>\n",
       "      <td>6.009</td>\n",
       "      <td>...</td>\n",
       "      <td>0.01</td>\n",
       "      <td>0.01</td>\n",
       "      <td>0.05</td>\n",
       "      <td>1</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>-0.001645</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1172</td>\n",
       "      <td>1280</td>\n",
       "      <td>2020-06-11</td>\n",
       "      <td>6.09</td>\n",
       "      <td>6.12</td>\n",
       "      <td>6.31</td>\n",
       "      <td>6.06</td>\n",
       "      <td>785067.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>0.008237</td>\n",
       "      <td>6.035</td>\n",
       "      <td>...</td>\n",
       "      <td>0.03</td>\n",
       "      <td>0.19</td>\n",
       "      <td>0.03</td>\n",
       "      <td>1</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>0.008237</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1173</td>\n",
       "      <td>1281</td>\n",
       "      <td>2020-06-12</td>\n",
       "      <td>6.06</td>\n",
       "      <td>6.10</td>\n",
       "      <td>6.10</td>\n",
       "      <td>5.99</td>\n",
       "      <td>340295.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>-0.003268</td>\n",
       "      <td>6.061</td>\n",
       "      <td>...</td>\n",
       "      <td>0.04</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.07</td>\n",
       "      <td>1</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>-0.003268</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1174</td>\n",
       "      <td>1282</td>\n",
       "      <td>2020-06-15</td>\n",
       "      <td>6.07</td>\n",
       "      <td>6.03</td>\n",
       "      <td>6.14</td>\n",
       "      <td>6.02</td>\n",
       "      <td>357692.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>-0.011475</td>\n",
       "      <td>6.063</td>\n",
       "      <td>...</td>\n",
       "      <td>0.04</td>\n",
       "      <td>0.07</td>\n",
       "      <td>0.01</td>\n",
       "      <td>1</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>-0.011475</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1175</td>\n",
       "      <td>1283</td>\n",
       "      <td>2020-06-16</td>\n",
       "      <td>6.08</td>\n",
       "      <td>6.17</td>\n",
       "      <td>6.19</td>\n",
       "      <td>6.07</td>\n",
       "      <td>342748.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>0.023217</td>\n",
       "      <td>6.071</td>\n",
       "      <td>...</td>\n",
       "      <td>0.09</td>\n",
       "      <td>0.02</td>\n",
       "      <td>0.01</td>\n",
       "      <td>1</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>0.023217</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1176</td>\n",
       "      <td>1284</td>\n",
       "      <td>2020-06-17</td>\n",
       "      <td>6.18</td>\n",
       "      <td>6.19</td>\n",
       "      <td>6.23</td>\n",
       "      <td>6.13</td>\n",
       "      <td>376090.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>0.003241</td>\n",
       "      <td>6.087</td>\n",
       "      <td>...</td>\n",
       "      <td>0.01</td>\n",
       "      <td>0.04</td>\n",
       "      <td>0.05</td>\n",
       "      <td>1</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>0.003241</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1177</td>\n",
       "      <td>1285</td>\n",
       "      <td>2020-06-18</td>\n",
       "      <td>6.19</td>\n",
       "      <td>6.30</td>\n",
       "      <td>6.36</td>\n",
       "      <td>6.16</td>\n",
       "      <td>609002.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>0.017771</td>\n",
       "      <td>6.112</td>\n",
       "      <td>...</td>\n",
       "      <td>0.11</td>\n",
       "      <td>0.06</td>\n",
       "      <td>0.03</td>\n",
       "      <td>1</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>0.017771</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1178</td>\n",
       "      <td>1286</td>\n",
       "      <td>2020-06-19</td>\n",
       "      <td>6.07</td>\n",
       "      <td>6.11</td>\n",
       "      <td>6.15</td>\n",
       "      <td>6.02</td>\n",
       "      <td>569584.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>-0.030159</td>\n",
       "      <td>6.121</td>\n",
       "      <td>...</td>\n",
       "      <td>0.04</td>\n",
       "      <td>0.04</td>\n",
       "      <td>0.05</td>\n",
       "      <td>1</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>-0.030159</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1179</td>\n",
       "      <td>1287</td>\n",
       "      <td>2020-06-22</td>\n",
       "      <td>6.10</td>\n",
       "      <td>6.01</td>\n",
       "      <td>6.12</td>\n",
       "      <td>5.98</td>\n",
       "      <td>462772.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>-0.016367</td>\n",
       "      <td>6.118</td>\n",
       "      <td>...</td>\n",
       "      <td>0.09</td>\n",
       "      <td>0.02</td>\n",
       "      <td>0.03</td>\n",
       "      <td>1</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>-0.018058</td>\n",
       "      <td>-10.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1180</td>\n",
       "      <td>1288</td>\n",
       "      <td>2020-06-23</td>\n",
       "      <td>6.02</td>\n",
       "      <td>6.07</td>\n",
       "      <td>6.14</td>\n",
       "      <td>5.95</td>\n",
       "      <td>393585.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>0.009983</td>\n",
       "      <td>6.117</td>\n",
       "      <td>...</td>\n",
       "      <td>0.05</td>\n",
       "      <td>0.07</td>\n",
       "      <td>0.07</td>\n",
       "      <td>1</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1181</td>\n",
       "      <td>1289</td>\n",
       "      <td>2020-06-24</td>\n",
       "      <td>6.07</td>\n",
       "      <td>6.12</td>\n",
       "      <td>6.17</td>\n",
       "      <td>6.06</td>\n",
       "      <td>327412.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>0.008237</td>\n",
       "      <td>6.122</td>\n",
       "      <td>...</td>\n",
       "      <td>0.05</td>\n",
       "      <td>0.05</td>\n",
       "      <td>0.01</td>\n",
       "      <td>1</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1182</td>\n",
       "      <td>1290</td>\n",
       "      <td>2020-06-29</td>\n",
       "      <td>6.10</td>\n",
       "      <td>6.04</td>\n",
       "      <td>6.10</td>\n",
       "      <td>5.99</td>\n",
       "      <td>518531.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>-0.013072</td>\n",
       "      <td>6.114</td>\n",
       "      <td>...</td>\n",
       "      <td>0.06</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.05</td>\n",
       "      <td>1</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1183</td>\n",
       "      <td>1291</td>\n",
       "      <td>2020-06-30</td>\n",
       "      <td>6.08</td>\n",
       "      <td>6.06</td>\n",
       "      <td>6.08</td>\n",
       "      <td>6.01</td>\n",
       "      <td>359353.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>0.003311</td>\n",
       "      <td>6.110</td>\n",
       "      <td>...</td>\n",
       "      <td>0.02</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.05</td>\n",
       "      <td>1</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1184</td>\n",
       "      <td>1292</td>\n",
       "      <td>2020-07-01</td>\n",
       "      <td>6.06</td>\n",
       "      <td>6.50</td>\n",
       "      <td>6.59</td>\n",
       "      <td>6.05</td>\n",
       "      <td>1102490.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>0.072607</td>\n",
       "      <td>6.157</td>\n",
       "      <td>...</td>\n",
       "      <td>0.44</td>\n",
       "      <td>0.09</td>\n",
       "      <td>0.01</td>\n",
       "      <td>0</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1185</td>\n",
       "      <td>1293</td>\n",
       "      <td>2020-07-02</td>\n",
       "      <td>6.51</td>\n",
       "      <td>6.75</td>\n",
       "      <td>6.86</td>\n",
       "      <td>6.50</td>\n",
       "      <td>1173322.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>0.038462</td>\n",
       "      <td>6.215</td>\n",
       "      <td>...</td>\n",
       "      <td>0.24</td>\n",
       "      <td>0.11</td>\n",
       "      <td>0.01</td>\n",
       "      <td>0</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1186</td>\n",
       "      <td>1294</td>\n",
       "      <td>2020-07-03</td>\n",
       "      <td>6.81</td>\n",
       "      <td>7.05</td>\n",
       "      <td>7.11</td>\n",
       "      <td>6.68</td>\n",
       "      <td>1459605.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>0.044444</td>\n",
       "      <td>6.301</td>\n",
       "      <td>...</td>\n",
       "      <td>0.24</td>\n",
       "      <td>0.06</td>\n",
       "      <td>0.13</td>\n",
       "      <td>0</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1187</td>\n",
       "      <td>1295</td>\n",
       "      <td>2020-07-06</td>\n",
       "      <td>7.75</td>\n",
       "      <td>7.76</td>\n",
       "      <td>7.76</td>\n",
       "      <td>7.75</td>\n",
       "      <td>496134.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>0.100709</td>\n",
       "      <td>6.447</td>\n",
       "      <td>...</td>\n",
       "      <td>0.01</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.00</td>\n",
       "      <td>1</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1188</td>\n",
       "      <td>1296</td>\n",
       "      <td>2020-07-07</td>\n",
       "      <td>8.54</td>\n",
       "      <td>8.54</td>\n",
       "      <td>8.54</td>\n",
       "      <td>8.45</td>\n",
       "      <td>931720.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>0.100515</td>\n",
       "      <td>6.690</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.09</td>\n",
       "      <td>1</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1189</td>\n",
       "      <td>1297</td>\n",
       "      <td>2020-07-08</td>\n",
       "      <td>8.70</td>\n",
       "      <td>8.35</td>\n",
       "      <td>8.70</td>\n",
       "      <td>7.96</td>\n",
       "      <td>3175475.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>-0.022248</td>\n",
       "      <td>6.924</td>\n",
       "      <td>...</td>\n",
       "      <td>0.35</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.39</td>\n",
       "      <td>0</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1190</td>\n",
       "      <td>1298</td>\n",
       "      <td>2020-07-09</td>\n",
       "      <td>8.31</td>\n",
       "      <td>8.42</td>\n",
       "      <td>8.59</td>\n",
       "      <td>8.15</td>\n",
       "      <td>1797828.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>0.008383</td>\n",
       "      <td>7.159</td>\n",
       "      <td>...</td>\n",
       "      <td>0.11</td>\n",
       "      <td>0.17</td>\n",
       "      <td>0.16</td>\n",
       "      <td>1</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1191</td>\n",
       "      <td>1299</td>\n",
       "      <td>2020-07-10</td>\n",
       "      <td>8.34</td>\n",
       "      <td>8.11</td>\n",
       "      <td>8.39</td>\n",
       "      <td>8.00</td>\n",
       "      <td>1463089.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>-0.036817</td>\n",
       "      <td>7.358</td>\n",
       "      <td>...</td>\n",
       "      <td>0.23</td>\n",
       "      <td>0.05</td>\n",
       "      <td>0.11</td>\n",
       "      <td>1</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1192</td>\n",
       "      <td>1300</td>\n",
       "      <td>2020-07-13</td>\n",
       "      <td>7.99</td>\n",
       "      <td>8.12</td>\n",
       "      <td>8.17</td>\n",
       "      <td>7.84</td>\n",
       "      <td>1485591.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>0.001233</td>\n",
       "      <td>7.566</td>\n",
       "      <td>...</td>\n",
       "      <td>0.13</td>\n",
       "      <td>0.05</td>\n",
       "      <td>0.15</td>\n",
       "      <td>1</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1193</td>\n",
       "      <td>1301</td>\n",
       "      <td>2020-07-14</td>\n",
       "      <td>8.11</td>\n",
       "      <td>8.16</td>\n",
       "      <td>8.40</td>\n",
       "      <td>8.00</td>\n",
       "      <td>1371729.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>0.004926</td>\n",
       "      <td>7.776</td>\n",
       "      <td>...</td>\n",
       "      <td>0.05</td>\n",
       "      <td>0.24</td>\n",
       "      <td>0.11</td>\n",
       "      <td>1</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1194</td>\n",
       "      <td>1302</td>\n",
       "      <td>2020-07-15</td>\n",
       "      <td>8.18</td>\n",
       "      <td>7.80</td>\n",
       "      <td>8.31</td>\n",
       "      <td>7.79</td>\n",
       "      <td>1222877.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>-0.044118</td>\n",
       "      <td>7.906</td>\n",
       "      <td>...</td>\n",
       "      <td>0.38</td>\n",
       "      <td>0.13</td>\n",
       "      <td>0.01</td>\n",
       "      <td>0</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1195</td>\n",
       "      <td>1303</td>\n",
       "      <td>2020-07-16</td>\n",
       "      <td>7.80</td>\n",
       "      <td>7.50</td>\n",
       "      <td>7.97</td>\n",
       "      <td>7.45</td>\n",
       "      <td>1020769.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>-0.038462</td>\n",
       "      <td>7.981</td>\n",
       "      <td>...</td>\n",
       "      <td>0.30</td>\n",
       "      <td>0.17</td>\n",
       "      <td>0.05</td>\n",
       "      <td>0</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1196</td>\n",
       "      <td>1304</td>\n",
       "      <td>2020-07-17</td>\n",
       "      <td>7.59</td>\n",
       "      <td>7.40</td>\n",
       "      <td>7.66</td>\n",
       "      <td>7.24</td>\n",
       "      <td>1106141.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>-0.013333</td>\n",
       "      <td>8.016</td>\n",
       "      <td>...</td>\n",
       "      <td>0.19</td>\n",
       "      <td>0.07</td>\n",
       "      <td>0.16</td>\n",
       "      <td>1</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1197</td>\n",
       "      <td>1305</td>\n",
       "      <td>2020-07-20</td>\n",
       "      <td>7.54</td>\n",
       "      <td>7.78</td>\n",
       "      <td>7.98</td>\n",
       "      <td>7.53</td>\n",
       "      <td>1332736.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>0.051351</td>\n",
       "      <td>8.018</td>\n",
       "      <td>...</td>\n",
       "      <td>0.24</td>\n",
       "      <td>0.20</td>\n",
       "      <td>0.01</td>\n",
       "      <td>0</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1198</td>\n",
       "      <td>1306</td>\n",
       "      <td>2020-07-21</td>\n",
       "      <td>7.80</td>\n",
       "      <td>7.75</td>\n",
       "      <td>7.88</td>\n",
       "      <td>7.68</td>\n",
       "      <td>825774.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>-0.003856</td>\n",
       "      <td>7.939</td>\n",
       "      <td>...</td>\n",
       "      <td>0.05</td>\n",
       "      <td>0.08</td>\n",
       "      <td>0.07</td>\n",
       "      <td>1</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1199</td>\n",
       "      <td>1307</td>\n",
       "      <td>2020-07-22</td>\n",
       "      <td>7.75</td>\n",
       "      <td>7.57</td>\n",
       "      <td>7.84</td>\n",
       "      <td>7.50</td>\n",
       "      <td>1061437.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>-0.023226</td>\n",
       "      <td>7.861</td>\n",
       "      <td>...</td>\n",
       "      <td>0.18</td>\n",
       "      <td>0.09</td>\n",
       "      <td>0.07</td>\n",
       "      <td>1</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1200</td>\n",
       "      <td>1308</td>\n",
       "      <td>2020-07-23</td>\n",
       "      <td>7.51</td>\n",
       "      <td>7.42</td>\n",
       "      <td>7.52</td>\n",
       "      <td>7.27</td>\n",
       "      <td>797948.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>-0.019815</td>\n",
       "      <td>7.761</td>\n",
       "      <td>...</td>\n",
       "      <td>0.09</td>\n",
       "      <td>0.01</td>\n",
       "      <td>0.15</td>\n",
       "      <td>1</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1201</td>\n",
       "      <td>1309</td>\n",
       "      <td>2020-07-24</td>\n",
       "      <td>7.44</td>\n",
       "      <td>7.17</td>\n",
       "      <td>7.60</td>\n",
       "      <td>7.07</td>\n",
       "      <td>1021883.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>-0.033693</td>\n",
       "      <td>7.667</td>\n",
       "      <td>...</td>\n",
       "      <td>0.27</td>\n",
       "      <td>0.16</td>\n",
       "      <td>0.10</td>\n",
       "      <td>0</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1202</td>\n",
       "      <td>1310</td>\n",
       "      <td>2020-07-27</td>\n",
       "      <td>7.17</td>\n",
       "      <td>7.05</td>\n",
       "      <td>7.22</td>\n",
       "      <td>7.00</td>\n",
       "      <td>584812.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>-0.016736</td>\n",
       "      <td>7.560</td>\n",
       "      <td>...</td>\n",
       "      <td>0.12</td>\n",
       "      <td>0.05</td>\n",
       "      <td>0.05</td>\n",
       "      <td>1</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1203</td>\n",
       "      <td>1311</td>\n",
       "      <td>2020-07-28</td>\n",
       "      <td>7.09</td>\n",
       "      <td>7.05</td>\n",
       "      <td>7.16</td>\n",
       "      <td>7.00</td>\n",
       "      <td>390028.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>7.449</td>\n",
       "      <td>...</td>\n",
       "      <td>0.04</td>\n",
       "      <td>0.07</td>\n",
       "      <td>0.05</td>\n",
       "      <td>1</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1204</td>\n",
       "      <td>1312</td>\n",
       "      <td>2020-07-29</td>\n",
       "      <td>7.03</td>\n",
       "      <td>7.23</td>\n",
       "      <td>7.25</td>\n",
       "      <td>6.96</td>\n",
       "      <td>551253.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>0.025532</td>\n",
       "      <td>7.392</td>\n",
       "      <td>...</td>\n",
       "      <td>0.20</td>\n",
       "      <td>0.02</td>\n",
       "      <td>0.07</td>\n",
       "      <td>1</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1205</td>\n",
       "      <td>1313</td>\n",
       "      <td>2020-07-30</td>\n",
       "      <td>7.19</td>\n",
       "      <td>7.17</td>\n",
       "      <td>7.24</td>\n",
       "      <td>7.10</td>\n",
       "      <td>539723.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>-0.008299</td>\n",
       "      <td>7.359</td>\n",
       "      <td>...</td>\n",
       "      <td>0.02</td>\n",
       "      <td>0.05</td>\n",
       "      <td>0.07</td>\n",
       "      <td>1</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1206</td>\n",
       "      <td>1314</td>\n",
       "      <td>2020-07-31</td>\n",
       "      <td>7.15</td>\n",
       "      <td>7.17</td>\n",
       "      <td>7.30</td>\n",
       "      <td>7.08</td>\n",
       "      <td>584679.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>7.336</td>\n",
       "      <td>...</td>\n",
       "      <td>0.02</td>\n",
       "      <td>0.13</td>\n",
       "      <td>0.07</td>\n",
       "      <td>1</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1207</td>\n",
       "      <td>1315</td>\n",
       "      <td>2020-08-03</td>\n",
       "      <td>7.22</td>\n",
       "      <td>7.46</td>\n",
       "      <td>7.46</td>\n",
       "      <td>7.15</td>\n",
       "      <td>965967.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>0.040446</td>\n",
       "      <td>7.304</td>\n",
       "      <td>...</td>\n",
       "      <td>0.24</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.07</td>\n",
       "      <td>0</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1208</td>\n",
       "      <td>1316</td>\n",
       "      <td>2020-08-04</td>\n",
       "      <td>7.42</td>\n",
       "      <td>7.65</td>\n",
       "      <td>7.78</td>\n",
       "      <td>7.37</td>\n",
       "      <td>1080313.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>0.025469</td>\n",
       "      <td>7.294</td>\n",
       "      <td>...</td>\n",
       "      <td>0.23</td>\n",
       "      <td>0.13</td>\n",
       "      <td>0.05</td>\n",
       "      <td>0</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1209</td>\n",
       "      <td>1317</td>\n",
       "      <td>2020-08-05</td>\n",
       "      <td>7.59</td>\n",
       "      <td>7.35</td>\n",
       "      <td>7.59</td>\n",
       "      <td>7.32</td>\n",
       "      <td>935721.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>-0.039216</td>\n",
       "      <td>7.272</td>\n",
       "      <td>...</td>\n",
       "      <td>0.24</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.03</td>\n",
       "      <td>0</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1210</td>\n",
       "      <td>1318</td>\n",
       "      <td>2020-08-06</td>\n",
       "      <td>7.41</td>\n",
       "      <td>7.37</td>\n",
       "      <td>7.42</td>\n",
       "      <td>7.21</td>\n",
       "      <td>525103.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>0.002721</td>\n",
       "      <td>7.267</td>\n",
       "      <td>...</td>\n",
       "      <td>0.04</td>\n",
       "      <td>0.01</td>\n",
       "      <td>0.16</td>\n",
       "      <td>1</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1211</td>\n",
       "      <td>1319</td>\n",
       "      <td>2020-08-07</td>\n",
       "      <td>7.39</td>\n",
       "      <td>7.31</td>\n",
       "      <td>7.48</td>\n",
       "      <td>7.27</td>\n",
       "      <td>599508.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>-0.008141</td>\n",
       "      <td>7.281</td>\n",
       "      <td>...</td>\n",
       "      <td>0.08</td>\n",
       "      <td>0.09</td>\n",
       "      <td>0.04</td>\n",
       "      <td>1</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>-0.010825</td>\n",
       "      <td>10.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1212</td>\n",
       "      <td>1320</td>\n",
       "      <td>2020-08-10</td>\n",
       "      <td>7.29</td>\n",
       "      <td>7.41</td>\n",
       "      <td>7.49</td>\n",
       "      <td>7.23</td>\n",
       "      <td>609633.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>0.013680</td>\n",
       "      <td>7.317</td>\n",
       "      <td>...</td>\n",
       "      <td>0.12</td>\n",
       "      <td>0.08</td>\n",
       "      <td>0.06</td>\n",
       "      <td>1</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>0.013680</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1213</td>\n",
       "      <td>1321</td>\n",
       "      <td>2020-08-11</td>\n",
       "      <td>7.43</td>\n",
       "      <td>7.30</td>\n",
       "      <td>7.57</td>\n",
       "      <td>7.28</td>\n",
       "      <td>587427.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>-0.014845</td>\n",
       "      <td>7.342</td>\n",
       "      <td>...</td>\n",
       "      <td>0.13</td>\n",
       "      <td>0.14</td>\n",
       "      <td>0.02</td>\n",
       "      <td>1</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>-0.014845</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1214</td>\n",
       "      <td>1322</td>\n",
       "      <td>2020-08-12</td>\n",
       "      <td>7.30</td>\n",
       "      <td>7.30</td>\n",
       "      <td>7.39</td>\n",
       "      <td>7.16</td>\n",
       "      <td>658822.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>7.349</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.09</td>\n",
       "      <td>0.14</td>\n",
       "      <td>1</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>-0.013711</td>\n",
       "      <td>-10.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1215</td>\n",
       "      <td>1323</td>\n",
       "      <td>2020-08-13</td>\n",
       "      <td>7.31</td>\n",
       "      <td>7.31</td>\n",
       "      <td>7.38</td>\n",
       "      <td>7.26</td>\n",
       "      <td>370999.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>0.001370</td>\n",
       "      <td>7.363</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.07</td>\n",
       "      <td>0.05</td>\n",
       "      <td>1</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1216</td>\n",
       "      <td>1324</td>\n",
       "      <td>2020-08-14</td>\n",
       "      <td>7.31</td>\n",
       "      <td>7.42</td>\n",
       "      <td>7.43</td>\n",
       "      <td>7.26</td>\n",
       "      <td>393725.0</td>\n",
       "      <td>000069</td>\n",
       "      <td>0.015048</td>\n",
       "      <td>7.388</td>\n",
       "      <td>...</td>\n",
       "      <td>0.11</td>\n",
       "      <td>0.01</td>\n",
       "      <td>0.05</td>\n",
       "      <td>1</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>50 rows × 23 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "      index        date  open  close  high   low     volume    code  \\\n",
       "1167   1275  2020-06-04  6.08   6.05  6.09  6.02   359589.0  000069   \n",
       "1168   1276  2020-06-05  6.04   6.02  6.07  5.98   236584.0  000069   \n",
       "1169   1277  2020-06-08  6.06   6.04  6.07  5.98   368699.0  000069   \n",
       "1170   1278  2020-06-09  6.04   6.08  6.12  6.03   367269.0  000069   \n",
       "1171   1279  2020-06-10  6.08   6.07  6.09  6.02   272229.0  000069   \n",
       "1172   1280  2020-06-11  6.09   6.12  6.31  6.06   785067.0  000069   \n",
       "1173   1281  2020-06-12  6.06   6.10  6.10  5.99   340295.0  000069   \n",
       "1174   1282  2020-06-15  6.07   6.03  6.14  6.02   357692.0  000069   \n",
       "1175   1283  2020-06-16  6.08   6.17  6.19  6.07   342748.0  000069   \n",
       "1176   1284  2020-06-17  6.18   6.19  6.23  6.13   376090.0  000069   \n",
       "1177   1285  2020-06-18  6.19   6.30  6.36  6.16   609002.0  000069   \n",
       "1178   1286  2020-06-19  6.07   6.11  6.15  6.02   569584.0  000069   \n",
       "1179   1287  2020-06-22  6.10   6.01  6.12  5.98   462772.0  000069   \n",
       "1180   1288  2020-06-23  6.02   6.07  6.14  5.95   393585.0  000069   \n",
       "1181   1289  2020-06-24  6.07   6.12  6.17  6.06   327412.0  000069   \n",
       "1182   1290  2020-06-29  6.10   6.04  6.10  5.99   518531.0  000069   \n",
       "1183   1291  2020-06-30  6.08   6.06  6.08  6.01   359353.0  000069   \n",
       "1184   1292  2020-07-01  6.06   6.50  6.59  6.05  1102490.0  000069   \n",
       "1185   1293  2020-07-02  6.51   6.75  6.86  6.50  1173322.0  000069   \n",
       "1186   1294  2020-07-03  6.81   7.05  7.11  6.68  1459605.0  000069   \n",
       "1187   1295  2020-07-06  7.75   7.76  7.76  7.75   496134.0  000069   \n",
       "1188   1296  2020-07-07  8.54   8.54  8.54  8.45   931720.0  000069   \n",
       "1189   1297  2020-07-08  8.70   8.35  8.70  7.96  3175475.0  000069   \n",
       "1190   1298  2020-07-09  8.31   8.42  8.59  8.15  1797828.0  000069   \n",
       "1191   1299  2020-07-10  8.34   8.11  8.39  8.00  1463089.0  000069   \n",
       "1192   1300  2020-07-13  7.99   8.12  8.17  7.84  1485591.0  000069   \n",
       "1193   1301  2020-07-14  8.11   8.16  8.40  8.00  1371729.0  000069   \n",
       "1194   1302  2020-07-15  8.18   7.80  8.31  7.79  1222877.0  000069   \n",
       "1195   1303  2020-07-16  7.80   7.50  7.97  7.45  1020769.0  000069   \n",
       "1196   1304  2020-07-17  7.59   7.40  7.66  7.24  1106141.0  000069   \n",
       "1197   1305  2020-07-20  7.54   7.78  7.98  7.53  1332736.0  000069   \n",
       "1198   1306  2020-07-21  7.80   7.75  7.88  7.68   825774.0  000069   \n",
       "1199   1307  2020-07-22  7.75   7.57  7.84  7.50  1061437.0  000069   \n",
       "1200   1308  2020-07-23  7.51   7.42  7.52  7.27   797948.0  000069   \n",
       "1201   1309  2020-07-24  7.44   7.17  7.60  7.07  1021883.0  000069   \n",
       "1202   1310  2020-07-27  7.17   7.05  7.22  7.00   584812.0  000069   \n",
       "1203   1311  2020-07-28  7.09   7.05  7.16  7.00   390028.0  000069   \n",
       "1204   1312  2020-07-29  7.03   7.23  7.25  6.96   551253.0  000069   \n",
       "1205   1313  2020-07-30  7.19   7.17  7.24  7.10   539723.0  000069   \n",
       "1206   1314  2020-07-31  7.15   7.17  7.30  7.08   584679.0  000069   \n",
       "1207   1315  2020-08-03  7.22   7.46  7.46  7.15   965967.0  000069   \n",
       "1208   1316  2020-08-04  7.42   7.65  7.78  7.37  1080313.0  000069   \n",
       "1209   1317  2020-08-05  7.59   7.35  7.59  7.32   935721.0  000069   \n",
       "1210   1318  2020-08-06  7.41   7.37  7.42  7.21   525103.0  000069   \n",
       "1211   1319  2020-08-07  7.39   7.31  7.48  7.27   599508.0  000069   \n",
       "1212   1320  2020-08-10  7.29   7.41  7.49  7.23   609633.0  000069   \n",
       "1213   1321  2020-08-11  7.43   7.30  7.57  7.28   587427.0  000069   \n",
       "1214   1322  2020-08-12  7.30   7.30  7.39  7.16   658822.0  000069   \n",
       "1215   1323  2020-08-13  7.31   7.31  7.38  7.26   370999.0  000069   \n",
       "1216   1324  2020-08-14  7.31   7.42  7.43  7.26   393725.0  000069   \n",
       "\n",
       "      pct_change     ma  ...  body  head  tail  body_cond  head_cond  \\\n",
       "1167    0.003317  5.936  ...  0.03  0.01  0.03          1       True   \n",
       "1168   -0.004959  5.956  ...  0.02  0.03  0.04          1      False   \n",
       "1169    0.003322  5.972  ...  0.02  0.01  0.06          1       True   \n",
       "1170    0.006623  5.990  ...  0.04  0.04  0.01          1      False   \n",
       "1171   -0.001645  6.009  ...  0.01  0.01  0.05          1       True   \n",
       "1172    0.008237  6.035  ...  0.03  0.19  0.03          1      False   \n",
       "1173   -0.003268  6.061  ...  0.04  0.00  0.07          1       True   \n",
       "1174   -0.011475  6.063  ...  0.04  0.07  0.01          1      False   \n",
       "1175    0.023217  6.071  ...  0.09  0.02  0.01          1      False   \n",
       "1176    0.003241  6.087  ...  0.01  0.04  0.05          1      False   \n",
       "1177    0.017771  6.112  ...  0.11  0.06  0.03          1      False   \n",
       "1178   -0.030159  6.121  ...  0.04  0.04  0.05          1      False   \n",
       "1179   -0.016367  6.118  ...  0.09  0.02  0.03          1      False   \n",
       "1180    0.009983  6.117  ...  0.05  0.07  0.07          1      False   \n",
       "1181    0.008237  6.122  ...  0.05  0.05  0.01          1      False   \n",
       "1182   -0.013072  6.114  ...  0.06  0.00  0.05          1       True   \n",
       "1183    0.003311  6.110  ...  0.02  0.00  0.05          1       True   \n",
       "1184    0.072607  6.157  ...  0.44  0.09  0.01          0      False   \n",
       "1185    0.038462  6.215  ...  0.24  0.11  0.01          0      False   \n",
       "1186    0.044444  6.301  ...  0.24  0.06  0.13          0       True   \n",
       "1187    0.100709  6.447  ...  0.01  0.00  0.00          1      False   \n",
       "1188    0.100515  6.690  ...  0.00  0.00  0.09          1       True   \n",
       "1189   -0.022248  6.924  ...  0.35  0.00  0.39          0       True   \n",
       "1190    0.008383  7.159  ...  0.11  0.17  0.16          1      False   \n",
       "1191   -0.036817  7.358  ...  0.23  0.05  0.11          1       True   \n",
       "1192    0.001233  7.566  ...  0.13  0.05  0.15          1       True   \n",
       "1193    0.004926  7.776  ...  0.05  0.24  0.11          1      False   \n",
       "1194   -0.044118  7.906  ...  0.38  0.13  0.01          0      False   \n",
       "1195   -0.038462  7.981  ...  0.30  0.17  0.05          0      False   \n",
       "1196   -0.013333  8.016  ...  0.19  0.07  0.16          1       True   \n",
       "1197    0.051351  8.018  ...  0.24  0.20  0.01          0      False   \n",
       "1198   -0.003856  7.939  ...  0.05  0.08  0.07          1      False   \n",
       "1199   -0.023226  7.861  ...  0.18  0.09  0.07          1      False   \n",
       "1200   -0.019815  7.761  ...  0.09  0.01  0.15          1       True   \n",
       "1201   -0.033693  7.667  ...  0.27  0.16  0.10          0      False   \n",
       "1202   -0.016736  7.560  ...  0.12  0.05  0.05          1      False   \n",
       "1203    0.000000  7.449  ...  0.04  0.07  0.05          1      False   \n",
       "1204    0.025532  7.392  ...  0.20  0.02  0.07          1       True   \n",
       "1205   -0.008299  7.359  ...  0.02  0.05  0.07          1      False   \n",
       "1206    0.000000  7.336  ...  0.02  0.13  0.07          1      False   \n",
       "1207    0.040446  7.304  ...  0.24  0.00  0.07          0       True   \n",
       "1208    0.025469  7.294  ...  0.23  0.13  0.05          0      False   \n",
       "1209   -0.039216  7.272  ...  0.24  0.00  0.03          0       True   \n",
       "1210    0.002721  7.267  ...  0.04  0.01  0.16          1       True   \n",
       "1211   -0.008141  7.281  ...  0.08  0.09  0.04          1      False   \n",
       "1212    0.013680  7.317  ...  0.12  0.08  0.06          1      False   \n",
       "1213   -0.014845  7.342  ...  0.13  0.14  0.02          1      False   \n",
       "1214    0.000000  7.349  ...  0.00  0.09  0.14          1      False   \n",
       "1215    0.001370  7.363  ...  0.00  0.07  0.05          1      False   \n",
       "1216    0.015048  7.388  ...  0.11  0.01  0.05          1       True   \n",
       "\n",
       "      tail_cond  hammer  yes_hammer    return  trade_mark  \n",
       "1167      False   False       False  0.003317         1.0  \n",
       "1168      False   False       False -0.004959         1.0  \n",
       "1169       True    True       False  0.003322         1.0  \n",
       "1170      False   False        True  0.006623         1.0  \n",
       "1171       True    True       False -0.001645         1.0  \n",
       "1172      False   False        True  0.008237         1.0  \n",
       "1173      False   False       False -0.003268         1.0  \n",
       "1174      False   False       False -0.011475         1.0  \n",
       "1175      False   False       False  0.023217         1.0  \n",
       "1176       True   False       False  0.003241         1.0  \n",
       "1177      False   False       False  0.017771         1.0  \n",
       "1178      False   False       False -0.030159         1.0  \n",
       "1179      False   False       False -0.018058       -10.0  \n",
       "1180      False   False       False       NaN         NaN  \n",
       "1181      False   False       False       NaN         NaN  \n",
       "1182      False   False       False       NaN         NaN  \n",
       "1183       True    True       False       NaN         NaN  \n",
       "1184      False   False        True       NaN         NaN  \n",
       "1185      False   False       False       NaN         NaN  \n",
       "1186      False   False       False       NaN         NaN  \n",
       "1187      False   False       False       NaN         NaN  \n",
       "1188       True    True       False       NaN         NaN  \n",
       "1189      False   False        True       NaN         NaN  \n",
       "1190      False   False       False       NaN         NaN  \n",
       "1191      False   False       False       NaN         NaN  \n",
       "1192      False   False       False       NaN         NaN  \n",
       "1193       True   False       False       NaN         NaN  \n",
       "1194      False   False       False       NaN         NaN  \n",
       "1195      False   False       False       NaN         NaN  \n",
       "1196      False   False       False       NaN         NaN  \n",
       "1197      False   False       False       NaN         NaN  \n",
       "1198      False   False       False       NaN         NaN  \n",
       "1199      False   False       False       NaN         NaN  \n",
       "1200      False   False       False       NaN         NaN  \n",
       "1201      False   False       False       NaN         NaN  \n",
       "1202      False   False       False       NaN         NaN  \n",
       "1203      False   False       False       NaN         NaN  \n",
       "1204      False   False       False       NaN         NaN  \n",
       "1205       True   False       False       NaN         NaN  \n",
       "1206       True   False       False       NaN         NaN  \n",
       "1207      False   False       False       NaN         NaN  \n",
       "1208      False   False       False       NaN         NaN  \n",
       "1209      False   False       False       NaN         NaN  \n",
       "1210       True    True       False       NaN         NaN  \n",
       "1211      False   False        True -0.010825        10.0  \n",
       "1212      False   False       False  0.013680         1.0  \n",
       "1213      False   False       False -0.014845         1.0  \n",
       "1214       True   False       False -0.013711       -10.0  \n",
       "1215       True   False       False       NaN         NaN  \n",
       "1216      False   False       False       NaN         NaN  \n",
       "\n",
       "[50 rows x 23 columns]"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.tail(50)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 3.4 计算策略收益率"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [],
   "source": [
    "data['return'].fillna(0, inplace=True)                   #对大循环中未处理的：既没有持仓，也不满足开仓条件的日期进行处理，则让这些天的return都等于0；\n",
    "\n",
    "\n",
    "data['strategy_return'] = (data['return'] + 1).cumprod()\n",
    "data['stock_return'] = (data['pct_change'] + 1).cumprod()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 3.5 绘图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x11bbd5b50>"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "data[['strategy_return', 'stock_return']].plot(figsize = (12,6))\n",
    "plt.title('000069 收益图')\n",
    "plt.legend()\n",
    "#plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 4. 策略改进和优化思考"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "1. 考虑成交量的配合：在锤子线后面的一根K线如果放量的话，交易信号更可信；    \n",
    "2. 考虑跟其他形态的结合，例如锤子线后面紧跟着一根大阳线，交易信号更可信；  \n",
    "3. 考虑和其他技术指标的结合，配合技术指标一起进行条件选股；\n",
    "4. 考虑对不同类型股票，行业，规模等其他因素进行分组回测，找出策略过去n年内表现更优的股票。\n",
    "5. 考虑和动量策略以及其他经典策略结合等。"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
